package me.timlong;

import java.util.ArrayList;

public class TailListOutput {

    /**
     * 输入一个链表，按链表从尾到头的顺序返回一个ArrayList。
     * @param listNode
     * @return
     */
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

        ArrayList<Integer> resultList = new ArrayList<>();

        //java的ArratList的方法add(index, <element>)可以实现指定位置插入

        ListNode temp_node = listNode;

        while(null != listNode){
            resultList.add(0, listNode.val);
            listNode = listNode.next;
        }

        return resultList;
    }
}

class ListNode {

    // 默认的访问方式为default，即在当前类和同一个package下可以访问
    // protected : 除了当前类以及同一个包下访问外,还为不在同一个包下的子类提供了一种访问父类成员的方式
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }

    public static void main(String[] args) {
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(2);
        ListNode node3 = new ListNode(3);
        node1.next = node2;
        node2.next = node3;

        System.out.println(new TailListOutput().printListFromTailToHead(node1).toString());



    }
}